home *** CD-ROM | disk | FTP | other *** search
- #include "Window.h"
- #include "WindowManager.h"
- #include "BaseMenuManager.h"
-
-
-
-
-
- extern WindowManager *gWindowManager;
-
-
-
-
-
- void BaseMenuManager::DoAddMenu(Menu *menu)
- {
- HandleAddMenu(menu);
- }
-
-
-
-
-
- void BaseMenuManager::DoMenuUpdates(void)
- {
- BaseMenuObject *mobj;
- Window *win;
- Boolean redraw;
-
-
- mobj = fMenuList.GetFirst();
- while(mobj != NULL)
- {
- HandleMenuUpdate(mobj->fMenuObject);
- mobj = mobj->next;
- }
-
- redraw = false;
- win = gWindowManager->DoGetFrontWindow();
- if (win && ((win->fFlags & (kDialog | kModal)) == (kDialog | kModal)))
- {
- // Enable Moveable Modal Dialog state
- mobj = fMenuList.GetFirst();
- while(mobj != NULL)
- {
- if (mobj->fMenuObject->DoSetDisableState(true))
- redraw = true;
-
- mobj = mobj->next;
- }
- }
- else
- {
- // Disable Moveable Modal Dialog state
- mobj = fMenuList.GetFirst();
- while(mobj != NULL)
- {
- if (mobj->fMenuObject->DoSetDisableState(false))
- redraw = true;
-
- mobj = mobj->next;
- }
- }
-
- if (redraw)
- ::DrawMenuBar();
- }
-
-
-
-
-
- void BaseMenuManager::DoSelect(UInt32 menu,UInt32 item)
- {
- Menu *mobj;
-
-
- mobj = DoGetMenu(menu);
- if (mobj != NULL)
- HandleSelect(mobj,item);
-
- ::HiliteMenu(0);
- }
-
-
-
-
-
- void BaseMenuManager::DoWindowNotice(Window *window,Boolean isBeingAdded)
- {
- BaseMenuObject *mobj;
-
-
- mobj = fMenuList.GetFirst();
- while(mobj != NULL)
- {
- HandleWindowNotice(mobj->fMenuObject,window,isBeingAdded);
- mobj = mobj->next;
- }
- }
-
-
-
-
-
- void BaseMenuManager::DoWindowActivation(Window *window,Boolean isBeingActivated)
- {
- BaseMenuObject *mobj;
-
-
- mobj = fMenuList.GetFirst();
- while(mobj != NULL)
- {
- HandleWindowActivation(mobj->fMenuObject,window,isBeingActivated);
- mobj = mobj->next;
- }
- }
-
-
-
-
-
- Menu *BaseMenuManager::DoGetMenu(UInt32 menuID)
- {
- return HandleGetMenu(menuID);
- }
-
-
- #pragma mark -
-
-
- void BaseMenuManager::HandleAddMenu(Menu *menu)
- {
- BaseMenuObject *obj;
-
-
- obj = new BaseMenuObject;
- if (obj != NULL)
- {
- obj->fMenuID = menu->fMenu[0]->menuID;
- obj->fMenuObject = menu;
- fMenuList.Append(obj);
- ::InsertMenu(menu->fMenu,0);
- }
- }
-
-
-
-
-
- void BaseMenuManager::HandleMenuUpdate(Menu *menu)
- {
- menu->DoUpdate();
- }
-
-
-
-
-
- void BaseMenuManager::HandleSelect(Menu *menu,UInt32 item)
- {
- menu->DoSelect(item);
- }
-
-
-
-
-
- void BaseMenuManager::HandleWindowNotice(Menu *menu,Window *window,Boolean isBeingAdded)
- {
- menu->DoWindowNotice(window,isBeingAdded);
- }
-
-
-
-
-
- void BaseMenuManager::HandleWindowActivation(Menu *menu,Window *window,Boolean isBeingActivated)
- {
- menu->DoWindowActivation(window,isBeingActivated);
- }
-
-
-
-
-
- Menu *BaseMenuManager::HandleGetMenu(UInt32 menuID)
- {
- BaseMenuObject *obj;
-
-
- obj = fMenuList.GetFirst();
- while(obj && (obj->fMenuID != menuID))
- obj = obj->next;
-
- return obj ? obj->fMenuObject : NULL;
- }
-